package com.pai4j.zwiki.service.agent;

import com.pai4j.zwiki.service.LLMService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;

/**
 * 智能文档生成器
 * 
 * 基于深度代码分析结果，自动生成高质量的项目文档
 * 
 * 文档类型：
 * 1. 项目概览文档 - 面向新加入者的项目介绍
 * 2. 架构设计文档 - 面向架构师和高级开发者
 * 3. API文档 - 面向前端开发者和API使用者
 * 4. 开发指南 - 面向项目贡献者
 * 5. 部署运维文档 - 面向运维人员
 * 6. 技术决策文档 - 记录重要的技术选型和设计决策
 *
 * @author pai4j
 * @since 2025-10-12
 */
@Slf4j
@Service
@RequiredArgsConstructor
public class IntelligentDocumentGenerator {

    // 这些字段预留给未来使用，暂时标记为不使用以避免警告
    @SuppressWarnings("unused")
    private final LLMService llmService;
    @SuppressWarnings("unused")
    private final EnhancedPromptEngine promptEngine;

    /**
     * 生成完整的项目文档集
     */
    public Map<String, String> generateCompleteDocumentation(
            Map<String, Object> analysisResults,
            String projectName,
            String workspacePath) {
        
        log.info("开始生成项目文档集");
        
        Map<String, String> documents = new HashMap<>();

        try {
            // 1. 生成项目概览文档（README.md）
            log.info("生成项目概览文档");
            String readmeDoc = generateProjectOverviewDocument(analysisResults, projectName);
            documents.put("README.md", readmeDoc);

            // 2. 生成架构设计文档
            log.info("生成架构设计文档");
            String architectureDoc = generateArchitectureDocument(analysisResults);
            documents.put("ARCHITECTURE.md", architectureDoc);

            // 3. 生成API文档
            log.info("生成API文档");
            String apiDoc = generateApiDocument(analysisResults);
            documents.put("API_DOCUMENTATION.md", apiDoc);

            // 4. 生成开发指南
            log.info("生成开发指南");
            String developmentGuide = generateDevelopmentGuide(analysisResults, workspacePath);
            documents.put("DEVELOPMENT_GUIDE.md", developmentGuide);

            // 5. 生成部署文档
            log.info("生成部署文档");
            String deploymentDoc = generateDeploymentDocument(analysisResults);
            documents.put("DEPLOYMENT.md", deploymentDoc);

            // 6. 生成技术决策记录
            log.info("生成技术决策记录");
            String techDecisions = generateTechnicalDecisionsDocument(analysisResults);
            documents.put("TECHNICAL_DECISIONS.md", techDecisions);

            // 7. 生成代码质量报告
            log.info("生成代码质量报告");
            String qualityReport = generateQualityReport(analysisResults);
            documents.put("QUALITY_REPORT.md", qualityReport);

            // 8. 生成改进建议文档
            log.info("生成改进建议文档");
            String improvementPlan = generateImprovementPlanDocument(analysisResults);
            documents.put("IMPROVEMENT_PLAN.md", improvementPlan);

            log.info("文档生成完成，共生成 {} 份文档", documents.size());

        } catch (Exception e) {
            log.error("文档生成失败", e);
            documents.put("ERROR.md", "文档生成过程中出现错误: " + e.getMessage());
        }

        return documents;
    }

    /**
     * 1. 生成项目概览文档（README.md）
     */
    private String generateProjectOverviewDocument(Map<String, Object> analysisResults, String projectName) {
        StringBuilder doc = new StringBuilder();

        doc.append("# ").append(projectName).append("\n\n");
        doc.append("> 🤖 此文档由AI自动生成于 ").append(getCurrentTimestamp()).append("\n\n");

        // 项目徽章
        doc.append("[![License](https://img.shields.io/badge/license-MIT-blue.svg)]");
        doc.append("(LICENSE)\n");
        doc.append("[![Java](https://img.shields.io/badge/java-11+-orange.svg)]");
        doc.append("(https://www.oracle.com/java/)\n\n");

        doc.append("---\n\n");

        // 项目简介
        doc.append("## 📖 项目简介\n\n");
        String projectIntro = extractProjectIntroduction(analysisResults);
        doc.append(projectIntro).append("\n\n");

        // 核心特性
        doc.append("## ✨ 核心特性\n\n");
        List<String> features = extractFeatures(analysisResults);
        for (String feature : features) {
            doc.append("- ").append(feature).append("\n");
        }
        doc.append("\n");

        // 技术栈
        doc.append("## 🛠️ 技术栈\n\n");
        Map<String, Object> techStack = extractTechStack(analysisResults);
        formatTechStack(doc, techStack);

        // 快速开始
        doc.append("## 🚀 快速开始\n\n");
        doc.append("### 环境要求\n\n");
        doc.append("- Java 11+\n");
        doc.append("- Maven 3.6+\n");
        doc.append("- MySQL 5.7+\n\n");

        doc.append("### 安装步骤\n\n");
        doc.append("```bash\n");
        doc.append("# 克隆项目\n");
        doc.append("git clone <repository-url>\n\n");
        doc.append("# 进入项目目录\n");
        doc.append("cd ").append(projectName).append("\n\n");
        doc.append("# 编译项目\n");
        doc.append("mvn clean install\n\n");
        doc.append("# 运行项目\n");
        doc.append("mvn spring-boot:run\n");
        doc.append("```\n\n");

        // 项目结构
        doc.append("## 📁 项目结构\n\n");
        String projectStructure = generateProjectStructureOverview(analysisResults);
        doc.append("```\n");
        doc.append(projectStructure);
        doc.append("```\n\n");

        // 相关文档
        doc.append("## 📚 相关文档\n\n");
        doc.append("- [架构设计文档](ARCHITECTURE.md) - 详细的系统架构说明\n");
        doc.append("- [API文档](API_DOCUMENTATION.md) - 接口使用说明\n");
        doc.append("- [开发指南](DEVELOPMENT_GUIDE.md) - 开发规范和指南\n");
        doc.append("- [部署文档](DEPLOYMENT.md) - 部署和运维说明\n\n");

        // 贡献指南
        doc.append("## 🤝 贡献指南\n\n");
        doc.append("我们欢迎所有形式的贡献！请查看 [开发指南](DEVELOPMENT_GUIDE.md) 了解如何参与项目。\n\n");

        // 许可证
        doc.append("## 📄 许可证\n\n");
        doc.append("本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。\n\n");

        // 联系方式
        doc.append("## 📧 联系我们\n\n");
        doc.append("如有问题或建议，请提交 Issue 或 Pull Request。\n\n");

        doc.append("---\n\n");
        doc.append("⭐ 如果这个项目对你有帮助，请给我们一个 Star！\n");

        return doc.toString();
    }

    /**
     * 2. 生成架构设计文档
     */
    private String generateArchitectureDocument(Map<String, Object> analysisResults) {
        StringBuilder doc = new StringBuilder();

        doc.append("# 架构设计文档\n\n");
        doc.append("> 🤖 此文档由AI自动生成于 ").append(getCurrentTimestamp()).append("\n\n");

        // 架构概览
        doc.append("## 1. 架构概览\n\n");
        
        @SuppressWarnings("unchecked")
        Map<String, Object> architecturePatterns = (Map<String, Object>) 
                analysisResults.getOrDefault("architecturePatterns", new HashMap<>());
        
        if (architecturePatterns.containsKey("architectureStyle")) {
            doc.append("### 1.1 架构风格\n\n");
            doc.append(architecturePatterns.get("architectureStyle")).append("\n\n");
        }

        if (architecturePatterns.containsKey("llmArchitectureAnalysis")) {
            doc.append("### 1.2 架构分析\n\n");
            doc.append(architecturePatterns.get("llmArchitectureAnalysis")).append("\n\n");
        }

        // 分层设计
        doc.append("## 2. 分层设计\n\n");
        
        @SuppressWarnings("unchecked")
        Map<String, List<String>> layers = (Map<String, List<String>>) 
                architecturePatterns.getOrDefault("layers", new HashMap<>());
        
        if (!layers.isEmpty()) {
            layers.forEach((layerName, packages) -> {
                doc.append("### ").append(layerName).append("\n\n");
                doc.append("**职责**: ").append(getLayerDescription(layerName)).append("\n\n");
                doc.append("**包含的包**:\n");
                packages.forEach(pkg -> doc.append("- `").append(pkg).append("`\n"));
                doc.append("\n");
            });
        }

        // 核心模块
        doc.append("## 3. 核心模块\n\n");
        
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> coreModules = (List<Map<String, Object>>) 
                analysisResults.getOrDefault("coreModules", new ArrayList<>());
        
        for (Map<String, Object> module : coreModules) {
            doc.append("### ").append(module.get("packageName")).append("\n\n");
            doc.append("- **模块类型**: ").append(module.get("moduleType")).append("\n");
            doc.append("- **类数量**: ").append(module.get("classCount")).append("\n\n");
            
            if (module.containsKey("llmAnalysis")) {
                doc.append("**功能说明**:\n\n");
                doc.append(module.get("llmAnalysis")).append("\n\n");
            }
        }

        // 设计模式
        doc.append("## 4. 设计模式\n\n");
        
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> designPatterns = (List<Map<String, Object>>) 
                analysisResults.getOrDefault("designPatterns", new ArrayList<>());
        
        if (!designPatterns.isEmpty()) {
            Map<String, List<String>> patternGroups = new HashMap<>();
            for (Map<String, Object> pattern : designPatterns) {
                String patternName = (String) pattern.get("pattern");
                String className = (String) pattern.get("class");
                patternGroups.computeIfAbsent(patternName, k -> new ArrayList<>()).add(className);
            }
            
            patternGroups.forEach((patternName, classes) -> {
                doc.append("### ").append(patternName).append(" 模式\n\n");
                doc.append("**使用位置**:\n");
                classes.forEach(cls -> doc.append("- `").append(cls).append("`\n"));
                doc.append("\n");
            });
        }

        // 依赖关系
        doc.append("## 5. 依赖关系\n\n");
        
        @SuppressWarnings("unchecked")
        Map<String, Object> dependencies = (Map<String, Object>) 
                analysisResults.getOrDefault("dependencies", new HashMap<>());
        
        if (dependencies.containsKey("importantClasses")) {
            doc.append("### 5.1 核心类（被依赖最多）\n\n");
            
            @SuppressWarnings("unchecked")
            List<Map<String, Object>> importantClasses = (List<Map<String, Object>>) 
                    dependencies.get("importantClasses");
            
            for (Map<String, Object> cls : importantClasses) {
                doc.append("- `").append(cls.get("className")).append("` - 被依赖 ")
                   .append(cls.get("dependencyCount")).append(" 次\n");
            }
            doc.append("\n");
        }

        // 数据流
        doc.append("## 6. 数据流\n\n");
        doc.append("### 6.1 请求处理流程\n\n");
        doc.append("```\n");
        doc.append("客户端请求\n");
        doc.append("    ↓\n");
        doc.append("Controller层（接收请求，参数校验）\n");
        doc.append("    ↓\n");
        doc.append("Service层（业务逻辑处理）\n");
        doc.append("    ↓\n");
        doc.append("Repository层（数据持久化）\n");
        doc.append("    ↓\n");
        doc.append("Database（数据存储）\n");
        doc.append("```\n\n");

        // 扩展性设计
        doc.append("## 7. 扩展性设计\n\n");
        doc.append("系统采用了以下设计来保证扩展性：\n\n");
        doc.append("1. **接口与实现分离**: 核心功能定义为接口，便于替换实现\n");
        doc.append("2. **策略模式**: 用于处理不同的业务策略\n");
        doc.append("3. **事件驱动**: 通过事件解耦模块间依赖\n");
        doc.append("4. **配置外部化**: 关键参数通过配置文件管理\n\n");

        return doc.toString();
    }

    /**
     * 3. 生成API文档
     */
    private String generateApiDocument(Map<String, Object> analysisResults) {
        StringBuilder doc = new StringBuilder();

        doc.append("# API 文档\n\n");
        doc.append("> 🤖 此文档由AI自动生成于 ").append(getCurrentTimestamp()).append("\n\n");

        doc.append("## 概述\n\n");
        doc.append("本文档描述了系统提供的所有RESTful API接口。\n\n");

        doc.append("## 基础信息\n\n");
        doc.append("- **Base URL**: `http://localhost:8080/api`\n");
        doc.append("- **认证方式**: Bearer Token\n");
        doc.append("- **数据格式**: JSON\n\n");

        doc.append("## 通用响应格式\n\n");
        doc.append("```json\n");
        doc.append("{\n");
        doc.append("  \"code\": 200,\n");
        doc.append("  \"message\": \"success\",\n");
        doc.append("  \"data\": {}\n");
        doc.append("}\n");
        doc.append("```\n\n");

        doc.append("## 状态码说明\n\n");
        doc.append("| 状态码 | 说明 |\n");
        doc.append("|--------|------|\n");
        doc.append("| 200 | 请求成功 |\n");
        doc.append("| 400 | 请求参数错误 |\n");
        doc.append("| 401 | 未授权 |\n");
        doc.append("| 403 | 无权限 |\n");
        doc.append("| 404 | 资源不存在 |\n");
        doc.append("| 500 | 服务器内部错误 |\n\n");

        // 分析业务流程，提取API端点
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> businessFlows = (List<Map<String, Object>>) 
                analysisResults.getOrDefault("businessFlows", new ArrayList<>());

        if (!businessFlows.isEmpty()) {
            doc.append("## API 端点\n\n");
            
            for (Map<String, Object> flow : businessFlows) {
                String entryPoint = (String) flow.get("entryPoint");
                if (entryPoint != null && entryPoint.contains("Controller")) {
                    doc.append("### ").append(extractModuleName(entryPoint)).append("\n\n");
                    doc.append("**控制器**: `").append(entryPoint).append("`\n\n");
                    doc.append("**功能说明**: [待补充具体的接口信息]\n\n");
                }
            }
        }

        doc.append("## 认证说明\n\n");
        doc.append("### 获取Token\n\n");
        doc.append("```http\n");
        doc.append("POST /api/auth/login\n");
        doc.append("Content-Type: application/json\n\n");
        doc.append("{\n");
        doc.append("  \"username\": \"your_username\",\n");
        doc.append("  \"password\": \"your_password\"\n");
        doc.append("}\n");
        doc.append("```\n\n");

        doc.append("### 使用Token\n\n");
        doc.append("```http\n");
        doc.append("GET /api/resource\n");
        doc.append("Authorization: Bearer <your_token>\n");
        doc.append("```\n\n");

        doc.append("## 错误处理\n\n");
        doc.append("当请求失败时，响应体会包含详细的错误信息：\n\n");
        doc.append("```json\n");
        doc.append("{\n");
        doc.append("  \"code\": 400,\n");
        doc.append("  \"message\": \"参数验证失败\",\n");
        doc.append("  \"errors\": [\n");
        doc.append("    {\n");
        doc.append("      \"field\": \"username\",\n");
        doc.append("      \"message\": \"用户名不能为空\"\n");
        doc.append("    }\n");
        doc.append("  ]\n");
        doc.append("}\n");
        doc.append("```\n\n");

        return doc.toString();
    }

    /**
     * 4. 生成开发指南
     */
    private String generateDevelopmentGuide(Map<String, Object> analysisResults, String workspacePath) {
        StringBuilder doc = new StringBuilder();

        doc.append("# 开发指南\n\n");
        doc.append("> 🤖 此文档由AI自动生成于 ").append(getCurrentTimestamp()).append("\n\n");

        doc.append("## 1. 开发环境搭建\n\n");
        doc.append("### 1.1 前置要求\n\n");
        doc.append("- JDK 11或更高版本\n");
        doc.append("- Maven 3.6+\n");
        doc.append("- MySQL 5.7+\n");
        doc.append("- Redis 6.0+（可选）\n");
        doc.append("- IDE推荐：IntelliJ IDEA\n\n");

        doc.append("### 1.2 导入项目\n\n");
        doc.append("1. 克隆代码仓库\n");
        doc.append("2. 使用IDE导入为Maven项目\n");
        doc.append("3. 等待依赖下载完成\n");
        doc.append("4. 配置数据库连接\n\n");

        doc.append("### 1.3 配置文件\n\n");
        doc.append("修改 `application.yml` 中的数据库配置：\n\n");
        doc.append("```yaml\n");
        doc.append("spring:\n");
        doc.append("  datasource:\n");
        doc.append("    url: jdbc:mysql://localhost:3306/your_database\n");
        doc.append("    username: your_username\n");
        doc.append("    password: your_password\n");
        doc.append("```\n\n");

        doc.append("## 2. 代码规范\n\n");
        doc.append("### 2.1 命名规范\n\n");
        doc.append("- **类名**: 使用大驼峰命名法（PascalCase），如 `UserService`\n");
        doc.append("- **方法名**: 使用小驼峰命名法（camelCase），如 `getUserById`\n");
        doc.append("- **常量名**: 全大写，下划线分隔，如 `MAX_RETRY_COUNT`\n");
        doc.append("- **包名**: 全小写，如 `com.example.project`\n\n");

        doc.append("### 2.2 注释规范\n\n");
        doc.append("- 所有public类和方法必须有JavaDoc注释\n");
        doc.append("- 复杂逻辑必须添加行内注释说明\n");
        doc.append("- 注释要清晰、准确，避免废话\n\n");

        doc.append("```java\n");
        doc.append("/**\n");
        doc.append(" * 获取用户信息\n");
        doc.append(" * \n");
        doc.append(" * @param userId 用户ID\n");
        doc.append(" * @return 用户信息\n");
        doc.append(" * @throws UserNotFoundException 用户不存在时抛出\n");
        doc.append(" */\n");
        doc.append("public User getUserById(Long userId) {\n");
        doc.append("    // 实现代码\n");
        doc.append("}\n");
        doc.append("```\n\n");

        doc.append("### 2.3 代码格式化\n\n");
        doc.append("- 使用4个空格缩进，不使用Tab\n");
        doc.append("- 每行代码不超过120字符\n");
        doc.append("- 左大括号不换行，右大括号单独一行\n");
        doc.append("- import语句按字母顺序排列\n\n");

        doc.append("## 3. 分层架构说明\n\n");
        doc.append("### 3.1 Controller层\n\n");
        doc.append("- 负责接收HTTP请求和参数验证\n");
        doc.append("- 调用Service层处理业务逻辑\n");
        doc.append("- 返回统一的响应格式\n");
        doc.append("- 不包含业务逻辑\n\n");

        doc.append("### 3.2 Service层\n\n");
        doc.append("- 包含核心业务逻辑\n");
        doc.append("- 处理事务管理\n");
        doc.append("- 调用Repository层进行数据操作\n");
        doc.append("- 可以调用其他Service\n\n");

        doc.append("### 3.3 Repository层\n\n");
        doc.append("- 负责数据持久化操作\n");
        doc.append("- 封装数据库访问逻辑\n");
        doc.append("- 不包含业务逻辑\n\n");

        doc.append("### 3.4 Domain层\n\n");
        doc.append("- 定义实体类和值对象\n");
        doc.append("- 包含领域模型\n");
        doc.append("- 可以包含简单的业务规则\n\n");

        doc.append("## 4. 开发流程\n\n");
        doc.append("### 4.1 功能开发流程\n\n");
        doc.append("1. **需求分析**: 理解需求，确定实现方案\n");
        doc.append("2. **设计**: 设计数据模型和接口\n");
        doc.append("3. **编码**: 按照代码规范实现功能\n");
        doc.append("4. **自测**: 编写单元测试，确保功能正常\n");
        doc.append("5. **代码审查**: 提交PR，等待代码审查\n");
        doc.append("6. **合并**: 审查通过后合并到主分支\n\n");

        doc.append("### 4.2 Git工作流\n\n");
        doc.append("```bash\n");
        doc.append("# 创建功能分支\n");
        doc.append("git checkout -b feature/your-feature-name\n\n");
        doc.append("# 开发并提交\n");
        doc.append("git add .\n");
        doc.append("git commit -m \"feat: 添加xx功能\"\n\n");
        doc.append("# 推送到远程\n");
        doc.append("git push origin feature/your-feature-name\n\n");
        doc.append("# 创建Pull Request\n");
        doc.append("```\n\n");

        doc.append("### 4.3 Commit Message规范\n\n");
        doc.append("```\n");
        doc.append("feat: 新功能\n");
        doc.append("fix: 修复bug\n");
        doc.append("docs: 文档更新\n");
        doc.append("style: 代码格式调整\n");
        doc.append("refactor: 重构\n");
        doc.append("test: 测试相关\n");
        doc.append("chore: 构建或辅助工具变动\n");
        doc.append("```\n\n");

        doc.append("## 5. 测试指南\n\n");
        doc.append("### 5.1 单元测试\n\n");
        doc.append("```java\n");
        doc.append("@SpringBootTest\n");
        doc.append("class UserServiceTest {\n");
        doc.append("    \n");
        doc.append("    @Autowired\n");
        doc.append("    private UserService userService;\n");
        doc.append("    \n");
        doc.append("    @Test\n");
        doc.append("    void testGetUserById() {\n");
        doc.append("        User user = userService.getUserById(1L);\n");
        doc.append("        assertNotNull(user);\n");
        doc.append("        assertEquals(\"张三\", user.getName());\n");
        doc.append("    }\n");
        doc.append("}\n");
        doc.append("```\n\n");

        doc.append("### 5.2 集成测试\n\n");
        doc.append("使用 MockMvc 进行接口测试：\n\n");
        doc.append("```java\n");
        doc.append("@AutoConfigureMockMvc\n");
        doc.append("@SpringBootTest\n");
        doc.append("class UserControllerTest {\n");
        doc.append("    \n");
        doc.append("    @Autowired\n");
        doc.append("    private MockMvc mockMvc;\n");
        doc.append("    \n");
        doc.append("    @Test\n");
        doc.append("    void testGetUser() throws Exception {\n");
        doc.append("        mockMvc.perform(get(\"/api/users/1\"))\n");
        doc.append("               .andExpect(status().isOk())\n");
        doc.append("               .andExpect(jsonPath(\"$.code\").value(200));\n");
        doc.append("    }\n");
        doc.append("}\n");
        doc.append("```\n\n");

        doc.append("## 6. 常见问题\n\n");
        doc.append("### 6.1 数据库连接失败\n\n");
        doc.append("检查数据库是否启动，配置是否正确。\n\n");

        doc.append("### 6.2 依赖下载慢\n\n");
        doc.append("配置Maven镜像：\n\n");
        doc.append("```xml\n");
        doc.append("<mirror>\n");
        doc.append("  <id>aliyun</id>\n");
        doc.append("  <mirrorOf>central</mirrorOf>\n");
        doc.append("  <url>https://maven.aliyun.com/repository/public</url>\n");
        doc.append("</mirror>\n");
        doc.append("```\n\n");

        return doc.toString();
    }

    /**
     * 5. 生成部署文档
     */
    private String generateDeploymentDocument(Map<String, Object> analysisResults) {
        StringBuilder doc = new StringBuilder();

        doc.append("# 部署文档\n\n");
        doc.append("> 🤖 此文档由AI自动生成于 ").append(getCurrentTimestamp()).append("\n\n");

        doc.append("## 1. 部署架构\n\n");
        doc.append("```\n");
        doc.append("         ┌─────────────┐\n");
        doc.append("         │  Nginx/LB   │\n");
        doc.append("         └──────┬──────┘\n");
        doc.append("                │\n");
        doc.append("       ┌────────┴────────┐\n");
        doc.append("       │                 │\n");
        doc.append(" ┌─────▼─────┐   ┌──────▼──────┐\n");
        doc.append(" │ App Node 1│   │ App Node 2  │\n");
        doc.append(" └─────┬─────┘   └──────┬──────┘\n");
        doc.append("       │                │\n");
        doc.append("       └────────┬───────┘\n");
        doc.append("                │\n");
        doc.append("       ┌────────▼────────┐\n");
        doc.append("       │   MySQL/Redis   │\n");
        doc.append("       └─────────────────┘\n");
        doc.append("```\n\n");

        doc.append("## 2. 环境要求\n\n");
        doc.append("### 2.1 硬件要求\n\n");
        doc.append("| 环境 | CPU | 内存 | 磁盘 |\n");
        doc.append("|------|-----|------|------|\n");
        doc.append("| 开发 | 2核 | 4GB  | 20GB |\n");
        doc.append("| 测试 | 4核 | 8GB  | 50GB |\n");
        doc.append("| 生产 | 8核 | 16GB | 100GB |\n\n");

        doc.append("### 2.2 软件要求\n\n");
        doc.append("- 操作系统: Linux (Ubuntu 20.04+ / CentOS 7+)\n");
        doc.append("- Java: OpenJDK 11+\n");
        doc.append("- MySQL: 5.7+\n");
        doc.append("- Redis: 6.0+\n");
        doc.append("- Nginx: 1.18+\n\n");

        doc.append("## 3. 数据库部署\n\n");
        doc.append("### 3.1 MySQL安装\n\n");
        doc.append("```bash\n");
        doc.append("# 安装MySQL\n");
        doc.append("sudo apt-get install mysql-server\n\n");
        doc.append("# 启动MySQL\n");
        doc.append("sudo systemctl start mysql\n");
        doc.append("sudo systemctl enable mysql\n");
        doc.append("```\n\n");

        doc.append("### 3.2 创建数据库\n\n");
        doc.append("```sql\n");
        doc.append("CREATE DATABASE your_database CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;\n");
        doc.append("CREATE USER 'your_user'@'%' IDENTIFIED BY 'your_password';\n");
        doc.append("GRANT ALL PRIVILEGES ON your_database.* TO 'your_user'@'%';\n");
        doc.append("FLUSH PRIVILEGES;\n");
        doc.append("```\n\n");

        doc.append("### 3.3 导入数据\n\n");
        doc.append("```bash\n");
        doc.append("mysql -u your_user -p your_database < database.sql\n");
        doc.append("```\n\n");

        doc.append("## 4. 应用部署\n\n");
        doc.append("### 4.1 打包应用\n\n");
        doc.append("```bash\n");
        doc.append("# 编译打包\n");
        doc.append("mvn clean package -DskipTests\n\n");
        doc.append("# 生成的jar文件在target目录下\n");
        doc.append("ls -lh target/*.jar\n");
        doc.append("```\n\n");

        doc.append("### 4.2 上传到服务器\n\n");
        doc.append("```bash\n");
        doc.append("scp target/your-app.jar user@server:/opt/app/\n");
        doc.append("```\n\n");

        doc.append("### 4.3 配置应用\n\n");
        doc.append("创建配置文件 `/opt/app/application-prod.yml`：\n\n");
        doc.append("```yaml\n");
        doc.append("server:\n");
        doc.append("  port: 8080\n\n");
        doc.append("spring:\n");
        doc.append("  datasource:\n");
        doc.append("    url: jdbc:mysql://localhost:3306/your_database\n");
        doc.append("    username: your_user\n");
        doc.append("    password: your_password\n");
        doc.append("```\n\n");

        doc.append("### 4.4 启动应用\n\n");
        doc.append("```bash\n");
        doc.append("# 启动应用\n");
        doc.append("java -jar -Dspring.profiles.active=prod your-app.jar\n\n");
        doc.append("# 后台运行\n");
        doc.append("nohup java -jar -Dspring.profiles.active=prod your-app.jar > app.log 2>&1 &\n");
        doc.append("```\n\n");

        doc.append("### 4.5 配置Systemd服务\n\n");
        doc.append("创建服务文件 `/etc/systemd/system/your-app.service`：\n\n");
        doc.append("```ini\n");
        doc.append("[Unit]\n");
        doc.append("Description=Your Application\n");
        doc.append("After=network.target\n\n");
        doc.append("[Service]\n");
        doc.append("Type=simple\n");
        doc.append("User=app\n");
        doc.append("WorkingDirectory=/opt/app\n");
        doc.append("ExecStart=/usr/bin/java -jar -Dspring.profiles.active=prod /opt/app/your-app.jar\n");
        doc.append("Restart=on-failure\n\n");
        doc.append("[Install]\n");
        doc.append("WantedBy=multi-user.target\n");
        doc.append("```\n\n");

        doc.append("启动服务：\n\n");
        doc.append("```bash\n");
        doc.append("sudo systemctl daemon-reload\n");
        doc.append("sudo systemctl start your-app\n");
        doc.append("sudo systemctl enable your-app\n");
        doc.append("```\n\n");

        doc.append("## 5. Nginx配置\n\n");
        doc.append("```nginx\n");
        doc.append("upstream backend {\n");
        doc.append("    server 127.0.0.1:8080;\n");
        doc.append("    # 可添加更多后端节点\n");
        doc.append("}\n\n");
        doc.append("server {\n");
        doc.append("    listen 80;\n");
        doc.append("    server_name your-domain.com;\n\n");
        doc.append("    location / {\n");
        doc.append("        proxy_pass http://backend;\n");
        doc.append("        proxy_set_header Host $host;\n");
        doc.append("        proxy_set_header X-Real-IP $remote_addr;\n");
        doc.append("        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n");
        doc.append("    }\n");
        doc.append("}\n");
        doc.append("```\n\n");

        doc.append("## 6. 监控与日志\n\n");
        doc.append("### 6.1 查看日志\n\n");
        doc.append("```bash\n");
        doc.append("# 实时查看日志\n");
        doc.append("tail -f /opt/app/app.log\n\n");
        doc.append("# 使用journalctl查看systemd服务日志\n");
        doc.append("sudo journalctl -u your-app -f\n");
        doc.append("```\n\n");

        doc.append("### 6.2 健康检查\n\n");
        doc.append("```bash\n");
        doc.append("# 检查应用状态\n");
        doc.append("curl http://localhost:8080/actuator/health\n");
        doc.append("```\n\n");

        doc.append("## 7. 故障排查\n\n");
        doc.append("### 7.1 应用无法启动\n\n");
        doc.append("1. 检查日志: `tail -f /opt/app/app.log`\n");
        doc.append("2. 检查端口占用: `netstat -tulpn | grep 8080`\n");
        doc.append("3. 检查配置文件: 确保数据库连接等配置正确\n\n");

        doc.append("### 7.2 性能问题\n\n");
        doc.append("1. 检查JVM内存使用: `jstat -gc <pid>`\n");
        doc.append("2. 生成线程dump: `jstack <pid> > thread.dump`\n");
        doc.append("3. 生成heap dump: `jmap -dump:format=b,file=heap.bin <pid>`\n\n");

        return doc.toString();
    }

    /**
     * 6. 生成技术决策文档
     */
    private String generateTechnicalDecisionsDocument(Map<String, Object> analysisResults) {
        StringBuilder doc = new StringBuilder();

        doc.append("# 技术决策记录 (ADR - Architecture Decision Records)\n\n");
        doc.append("> 🤖 此文档由AI自动生成于 ").append(getCurrentTimestamp()).append("\n\n");

        doc.append("## 概述\n\n");
        doc.append("本文档记录了项目中的重要技术决策及其背后的考量。\n\n");

        // 基于分析结果推断技术决策
        @SuppressWarnings("unchecked")
        Map<String, Object> techStack = (Map<String, Object>) 
                analysisResults.getOrDefault("techStack", new HashMap<>());

        int adrNumber = 1;

        // ADR 1: 架构风格选择
        doc.append("## ADR-").append(adrNumber++).append(": 架构风格选择\n\n");
        doc.append("### 状态\n\n接受\n\n");
        doc.append("### 背景\n\n");
        doc.append("项目需要选择合适的架构风格来支撑业务发展。\n\n");
        doc.append("### 决策\n\n");
        doc.append("采用分层架构（Layered Architecture）。\n\n");
        doc.append("### 理由\n\n");
        doc.append("1. **团队熟悉度**: 团队对分层架构非常熟悉\n");
        doc.append("2. **业务复杂度**: 当前业务复杂度适中，分层架构足够应对\n");
        doc.append("3. **开发效率**: 分层架构能够快速开发和迭代\n");
        doc.append("4. **维护成本**: 分层清晰，易于维护\n\n");
        doc.append("### 影响\n\n");
        doc.append("- ✅ 提高代码可维护性\n");
        doc.append("- ✅ 降低学习成本\n");
        doc.append("- ⚠️ 可能在高并发场景下需要优化\n\n");

        // ADR 2: 持久层框架选择
        doc.append("## ADR-").append(adrNumber++).append(": 持久层框架选择\n\n");
        doc.append("### 状态\n\n接受\n\n");
        doc.append("### 背景\n\n");
        doc.append("需要选择合适的ORM框架来处理数据持久化。\n\n");
        doc.append("### 决策\n\n");
        
        if (techStack.containsKey("frameworks")) {
            @SuppressWarnings("unchecked")
            List<String> frameworks = (List<String>) techStack.get("frameworks");
            if (frameworks.contains("MyBatis")) {
                doc.append("使用MyBatis作为ORM框架。\n\n");
                doc.append("### 理由\n\n");
                doc.append("1. **灵活性**: MyBatis提供了SQL的完全控制权\n");
                doc.append("2. **性能**: 可以精细优化SQL性能\n");
                doc.append("3. **学习曲线**: 团队已有MyBatis使用经验\n");
                doc.append("4. **复杂查询**: 更适合处理复杂的业务查询\n\n");
            } else {
                doc.append("使用JPA/Hibernate作为ORM框架。\n\n");
                doc.append("### 理由\n\n");
                doc.append("1. **标准化**: JPA是Java EE标准\n");
                doc.append("2. **生产力**: 减少样板代码，提高开发效率\n");
                doc.append("3. **面向对象**: 更符合面向对象的编程思想\n\n");
            }
        }

        doc.append("### 影响\n\n");
        doc.append("- ✅ 提高数据访问层的开发效率\n");
        doc.append("- ✅ 统一数据访问方式\n\n");

        // ADR 3: 缓存策略
        doc.append("## ADR-").append(adrNumber++).append(": 缓存策略\n\n");
        doc.append("### 状态\n\n接受\n\n");
        doc.append("### 背景\n\n");
        doc.append("为了提高系统性能，需要引入缓存机制。\n\n");
        doc.append("### 决策\n\n");
        doc.append("使用Redis作为分布式缓存。\n\n");
        doc.append("### 理由\n\n");
        doc.append("1. **性能**: Redis提供极高的读写性能\n");
        doc.append("2. **数据结构**: 支持多种数据结构\n");
        doc.append("3. **持久化**: 支持数据持久化\n");
        doc.append("4. **集群**: 易于扩展为集群模式\n\n");
        doc.append("### 影响\n\n");
        doc.append("- ✅ 显著提升查询性能\n");
        doc.append("- ✅ 减少数据库压力\n");
        doc.append("- ⚠️ 需要处理缓存一致性问题\n\n");

        // ADR 4: API设计风格
        doc.append("## ADR-").append(adrNumber++).append(": API设计风格\n\n");
        doc.append("### 状态\n\n接受\n\n");
        doc.append("### 背景\n\n");
        doc.append("需要设计统一的API风格。\n\n");
        doc.append("### 决策\n\n");
        doc.append("采用RESTful API设计风格。\n\n");
        doc.append("### 理由\n\n");
        doc.append("1. **标准化**: REST是业界标准\n");
        doc.append("2. **简单**: 基于HTTP，易于理解和使用\n");
        doc.append("3. **无状态**: 便于横向扩展\n");
        doc.append("4. **生态丰富**: 工具和库支持完善\n\n");
        doc.append("### 影响\n\n");
        doc.append("- ✅ API设计统一、规范\n");
        doc.append("- ✅ 易于前后端分离\n");
        doc.append("- ✅ 便于第三方集成\n\n");

        return doc.toString();
    }

    /**
     * 7. 生成代码质量报告
     */
    private String generateQualityReport(Map<String, Object> analysisResults) {
        StringBuilder doc = new StringBuilder();

        doc.append("# 代码质量报告\n\n");
        doc.append("> 🤖 此文档由AI自动生成于 ").append(getCurrentTimestamp()).append("\n\n");

        doc.append("## 1. 质量概览\n\n");

        @SuppressWarnings("unchecked")
        Map<String, Object> quality = (Map<String, Object>) 
                analysisResults.getOrDefault("quality", new HashMap<>());

        if (quality.containsKey("qualityScore")) {
            int score = (int) quality.get("qualityScore");
            doc.append("**整体质量评分**: ").append(score).append("/100\n\n");
            doc.append(getQualityLevel(score)).append("\n\n");
        }

        doc.append("## 2. 代码度量\n\n");

        if (quality.containsKey("averageClassLines")) {
            doc.append("- **平均类行数**: ").append(quality.get("averageClassLines")).append("\n");
        }

        if (quality.containsKey("modifierDistribution")) {
            doc.append("- **访问修饰符分布**:\n");
            @SuppressWarnings("unchecked")
            Map<String, Long> modifiers = (Map<String, Long>) quality.get("modifierDistribution");
            modifiers.forEach((modifier, count) -> 
                doc.append("  - ").append(modifier).append(": ").append(count).append("\n"));
        }

        doc.append("\n");

        // 设计原则分析
        @SuppressWarnings("unchecked")
        Map<String, Object> designPrinciples = (Map<String, Object>) 
                analysisResults.getOrDefault("designPrinciples", new HashMap<>());

        if (designPrinciples.containsKey("overallAssessment")) {
            doc.append("## 3. 设计原则遵循度\n\n");
            doc.append(designPrinciples.get("overallAssessment")).append("\n\n");
        }

        // 复杂度分析
        @SuppressWarnings("unchecked")
        Map<String, Object> complexityAnalysis = (Map<String, Object>) 
                analysisResults.getOrDefault("complexityAnalysis", new HashMap<>());

        if (complexityAnalysis.containsKey("complexClasses")) {
            doc.append("## 4. 复杂度分析\n\n");
            
            @SuppressWarnings("unchecked")
            List<Map<String, Object>> complexClasses = (List<Map<String, Object>>) 
                    complexityAnalysis.get("complexClasses");

            if (!complexClasses.isEmpty()) {
                doc.append("### 高复杂度类\n\n");
                doc.append("以下类的复杂度较高，建议进行重构：\n\n");

                for (int i = 0; i < Math.min(10, complexClasses.size()); i++) {
                    Map<String, Object> cls = complexClasses.get(i);
                    doc.append("- `").append(cls.get("className")).append("`\n");
                    doc.append("  - 方法数: ").append(cls.get("methodCount")).append("\n");
                    doc.append("  - 行数: ").append(cls.get("lineCount")).append("\n");
                    doc.append("  - 复杂度分数: ").append(cls.get("complexityScore")).append("\n\n");
                }
            }
        }

        // 安全问题
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> securityIssues = (List<Map<String, Object>>) 
                analysisResults.getOrDefault("securityIssues", new ArrayList<>());

        if (!securityIssues.isEmpty()) {
            doc.append("## 5. 安全分析\n\n");
            doc.append("发现 ").append(securityIssues.size()).append(" 个需要安全审查的类。\n\n");
            doc.append("详细信息请查看各个类的安全分析报告。\n\n");
        }

        // 性能分析
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> performanceBottlenecks = (List<Map<String, Object>>) 
                analysisResults.getOrDefault("performanceBottlenecks", new ArrayList<>());

        if (!performanceBottlenecks.isEmpty()) {
            doc.append("## 6. 性能分析\n\n");
            doc.append("发现 ").append(performanceBottlenecks.size()).append(" 个潜在性能瓶颈。\n\n");
        }

        // 技术债务
        @SuppressWarnings("unchecked")
        Map<String, Object> technicalDebt = (Map<String, Object>) 
                analysisResults.getOrDefault("technicalDebt", new HashMap<>());

        if (technicalDebt.containsKey("debtLevel")) {
            doc.append("## 7. 技术债务\n\n");
            doc.append("**技术债务等级**: ").append(technicalDebt.get("debtLevel")).append("\n\n");

            if (technicalDebt.containsKey("debtItems")) {
                @SuppressWarnings("unchecked")
                List<Map<String, Object>> debtItems = (List<Map<String, Object>>) 
                        technicalDebt.get("debtItems");

                doc.append("发现 ").append(debtItems.size()).append(" 个技术债务项。\n\n");
            }
        }

        // 最佳实践
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> bestPractices = (List<Map<String, Object>>) 
                analysisResults.getOrDefault("bestPractices", new ArrayList<>());

        if (!bestPractices.isEmpty()) {
            doc.append("## 8. 最佳实践\n\n");
            doc.append("项目中发现以下值得学习的最佳实践：\n\n");

            for (int i = 0; i < Math.min(5, bestPractices.size()); i++) {
                Map<String, Object> practice = bestPractices.get(i);
                doc.append("### ").append(practice.get("className")).append("\n\n");
                @SuppressWarnings("unchecked")
                List<String> practices = (List<String>) practice.get("practices");
                practices.forEach(p -> doc.append("- ").append(p).append("\n"));
                doc.append("\n");
            }
        }

        doc.append("## 9. 总结与建议\n\n");
        doc.append("### 优点\n\n");
        doc.append("1. 代码结构清晰，分层合理\n");
        doc.append("2. 使用了现代化的技术栈\n");
        doc.append("3. 部分代码体现了良好的工程实践\n\n");

        doc.append("### 改进建议\n\n");
        doc.append("1. **重构复杂类**: 将大类拆分为更小的、职责单一的类\n");
        doc.append("2. **提升测试覆盖率**: 增加单元测试和集成测试\n");
        doc.append("3. **优化性能**: 对识别出的性能瓶颈进行优化\n");
        doc.append("4. **加强安全**: 修复安全漏洞，加强输入验证和权限控制\n");
        doc.append("5. **偿还技术债务**: 逐步解决识别出的技术债务\n\n");

        return doc.toString();
    }

    /**
     * 8. 生成改进计划文档
     */
    private String generateImprovementPlanDocument(Map<String, Object> analysisResults) {
        StringBuilder doc = new StringBuilder();

        doc.append("# 项目改进计划\n\n");
        doc.append("> 🤖 此文档由AI自动生成于 ").append(getCurrentTimestamp()).append("\n\n");

        // 从洞察分析中获取改进路线图
        if (analysisResults.containsKey("improvementRoadmap")) {
            doc.append(analysisResults.get("improvementRoadmap"));
        } else {
            doc.append("## 改进优先级\n\n");
            doc.append("### P0 - 立即修复（1周内）\n\n");
            doc.append("- [ ] 修复已识别的安全漏洞\n");
            doc.append("- [ ] 修复严重的性能问题\n");
            doc.append("- [ ] 修复生产环境的bug\n\n");

            doc.append("### P1 - 高优先级（1个月内）\n\n");
            doc.append("- [ ] 重构最复杂的类\n");
            doc.append("- [ ] 优化数据库查询\n");
            doc.append("- [ ] 提升测试覆盖率到80%\n");
            doc.append("- [ ] 完善API文档\n\n");

            doc.append("### P2 - 中优先级（3个月内）\n\n");
            doc.append("- [ ] 改进架构设计\n");
            doc.append("- [ ] 优化模块划分\n");
            doc.append("- [ ] 引入自动化测试\n");
            doc.append("- [ ] 完善监控和日志\n\n");

            doc.append("### P3 - 低优先级（长期规划）\n\n");
            doc.append("- [ ] 技术栈升级\n");
            doc.append("- [ ] 架构演进\n");
            doc.append("- [ ] 性能优化\n\n");
        }

        doc.append("## 改进措施详情\n\n");

        // 安全改进
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> securityIssues = (List<Map<String, Object>>) 
                analysisResults.getOrDefault("securityIssues", new ArrayList<>());

        if (!securityIssues.isEmpty()) {
            doc.append("### 安全改进\n\n");
            doc.append("**目标**: 提升系统安全性，消除已知漏洞\n\n");
            doc.append("**措施**:\n");
            doc.append("1. 对所有用户输入进行严格验证\n");
            doc.append("2. 使用参数化查询防止SQL注入\n");
            doc.append("3. 加强认证和授权机制\n");
            doc.append("4. 对敏感数据进行加密\n");
            doc.append("5. 定期进行安全审计\n\n");
        }

        // 性能改进
        @SuppressWarnings("unchecked")
        List<Map<String, Object>> performanceBottlenecks = (List<Map<String, Object>>) 
                analysisResults.getOrDefault("performanceBottlenecks", new ArrayList<>());

        if (!performanceBottlenecks.isEmpty()) {
            doc.append("### 性能改进\n\n");
            doc.append("**目标**: 提升系统性能，优化响应时间\n\n");
            doc.append("**措施**:\n");
            doc.append("1. 优化慢查询，添加必要的索引\n");
            doc.append("2. 引入缓存机制，减少数据库访问\n");
            doc.append("3. 优化算法复杂度\n");
            doc.append("4. 使用异步处理提升并发能力\n");
            doc.append("5. 进行压力测试，找出性能瓶颈\n\n");
        }

        // 代码质量改进
        doc.append("### 代码质量改进\n\n");
        doc.append("**目标**: 提升代码质量，降低维护成本\n\n");
        doc.append("**措施**:\n");
        doc.append("1. 重构复杂类，遵循单一职责原则\n");
        doc.append("2. 消除代码重复，提取公共方法\n");
        doc.append("3. 完善注释和文档\n");
        doc.append("4. 统一代码风格\n");
        doc.append("5. 引入代码质量检查工具（如SonarQube）\n\n");

        doc.append("## 执行计划\n\n");

        doc.append("### 第一阶段（Week 1-2）\n\n");
        doc.append("- 修复安全漏洞\n");
        doc.append("- 优化最严重的性能问题\n");
        doc.append("- 搭建代码质量检查环境\n\n");

        doc.append("### 第二阶段（Week 3-4）\n\n");
        doc.append("- 重构前5个最复杂的类\n");
        doc.append("- 优化数据库查询\n");
        doc.append("- 提升测试覆盖率\n\n");

        doc.append("### 第三阶段（Week 5-8）\n\n");
        doc.append("- 继续重构和优化\n");
        doc.append("- 完善文档\n");
        doc.append("- 建立持续集成流程\n\n");

        doc.append("### 第四阶段（Week 9-12）\n\n");
        doc.append("- 架构优化\n");
        doc.append("- 性能调优\n");
        doc.append("- 建立监控体系\n\n");

        doc.append("## 验收标准\n\n");

        doc.append("1. **安全性**: 通过安全扫描，无高危漏洞\n");
        doc.append("2. **性能**: 接口响应时间 < 200ms (P95)\n");
        doc.append("3. **质量**: 代码质量评分 > 80分\n");
        doc.append("4. **测试**: 单元测试覆盖率 > 80%%\n");
        doc.append("5. **文档**: 核心功能有完整文档\n\n");

        return doc.toString();
    }

    // ========== 辅助方法 ==========

    private String getCurrentTimestamp() {
        return LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
    }

    private String extractProjectIntroduction(Map<String, Object> analysisResults) {
        @SuppressWarnings("unchecked")
        Map<String, Object> overview = (Map<String, Object>) 
                analysisResults.getOrDefault("overview", new HashMap<>());

        if (overview.containsKey("llmSummary")) {
            return overview.get("llmSummary").toString();
        }

        return "这是一个基于Spring Boot的Java Web应用项目。";
    }

    private List<String> extractFeatures(Map<String, Object> analysisResults) {
        List<String> features = new ArrayList<>();
        features.add("🎯 清晰的分层架构设计");
        features.add("🛡️ 完善的权限控制机制");
        features.add("💾 高效的数据持久化");
        features.add("🚀 RESTful API设计");
        features.add("📊 完善的日志和监控");
        return features;
    }

    private Map<String, Object> extractTechStack(Map<String, Object> analysisResults) {
        @SuppressWarnings("unchecked")
        Map<String, Object> techStack = (Map<String, Object>) 
                analysisResults.getOrDefault("techStack", new HashMap<>());
        
        if (techStack.isEmpty()) {
            techStack.put("后端框架", Arrays.asList("Spring Boot", "Spring MVC"));
            techStack.put("数据库", Arrays.asList("MySQL"));
            techStack.put("ORM框架", Arrays.asList("MyBatis"));
        }
        
        return techStack;
    }

    private void formatTechStack(StringBuilder doc, Map<String, Object> techStack) {
        techStack.forEach((category, tech) -> {
            doc.append("### ").append(category).append("\n\n");
            if (tech instanceof List) {
                @SuppressWarnings("unchecked")
                List<String> techList = (List<String>) tech;
                techList.forEach(t -> doc.append("- ").append(t).append("\n"));
            } else {
                doc.append("- ").append(tech).append("\n");
            }
            doc.append("\n");
        });
    }

    private String generateProjectStructureOverview(Map<String, Object> analysisResults) {
        return """
                project/
                ├── src/
                │   ├── main/
                │   │   ├── java/           # Java源代码
                │   │   └── resources/      # 配置文件
                │   └── test/               # 测试代码
                ├── pom.xml                 # Maven配置
                └── README.md               # 项目说明
                """;
    }

    private String getLayerDescription(String layerName) {
        return switch (layerName) {
            case "控制层" -> "接收HTTP请求，参数验证，调用服务层";
            case "服务层" -> "核心业务逻辑处理，事务管理";
            case "持久层" -> "数据库访问，数据持久化";
            case "领域层" -> "领域模型定义，业务规则";
            case "配置层" -> "系统配置，Bean定义";
            default -> "其他功能模块";
        };
    }

    private String extractModuleName(String controllerName) {
        return controllerName.replace("Controller", "");
    }

    private String getQualityLevel(int score) {
        if (score >= 90) return "🌟 **优秀** - 代码质量非常高";
        if (score >= 80) return "✅ **良好** - 代码质量较好";
        if (score >= 70) return "⚠️ **一般** - 代码质量中等，有改进空间";
        if (score >= 60) return "⚠️ **较差** - 代码质量较低，需要重点改进";
        return "❌ **很差** - 代码质量严重不足，急需改进";
    }
}

